package config

import (
	"fmt"
	"os"

	rice "github.com/GeertJohan/go.rice"
	"github.com/go-ini/ini"
)

var Config ConfigInfo = ConfigInfo{}

type ConfigInfo struct {
	// profile
	Profile string

	ServiceName string `ini:"config.GlobalConfig.ServiceName"`

	//sqlite
	SqlitePath   string `ini:"sqlite.path"`         //数据库地址
	MaxIdleConns int    `ini:"sqlite.maxidleconns"` //连接池最大连接数
	MaxOpenConns int    `ini:"sqlite.maxopenconns"` //连接空闲时间
	//log
	LogDir         string `ini:"config.GlobalConfig.LogDir"`
	LogMaxDayCount int    `ini:"config.GlobalConfig.LogMaxDayCount"`
	// mysql
	MysqlUrl          string `ini:"mysql.url"`            //数据库地址
	MysqlMaxIdleCount int    `ini:"mysql.max.idle.count"` //连接池最大连接数
	MysqlMaxOpenConns int    `ini:"mysql.max.open.count"` //连接空闲时间
	// image
	ImagePath string `ini:"image.path"` //图片保存地址
}

func Init() {
	fmt.Println("================加载配置文件==============")
	box := rice.MustFindBox("./config-file")
	configByte := box.MustBytes("config_" + Config.Profile + ".ini")

	//加载环境相应配置文件
	cfg, err := ini.Load(configByte)
	if err != nil {
		fmt.Printf("Fail to read file: %v", err)
		os.Exit(1)
	}
	// cfg.Section("sqlite").MapTo(&Config)
	cfg.Section("log").MapTo(&Config)
	cfg.Section("image").MapTo(&Config)
	cfg.Section("mysql").MapTo(&Config)
}
